package com.linksfield.topup.mapper;

import com.linksfield.topup.config.dto.PageAndSort;
import com.linksfield.topup.entity.common.SysOperate;
import com.linksfield.topup.entity.interfaces.accountmanage.search.request.RequestAccountSearch;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 登录业务逻辑数据库操作映射接口
 *
 * @author: lm
 * @date: 2019-11-21 15:40
 */

@Mapper
public interface SysOperateMapper {

    /**
     * 验证账号和密码的有效性，用于验证账户的合法性
     *
     * @param account
     * @param password
     * @return
     */
    SysOperate checkLogin(@Param("operAccount") String account,
                          @Param("operPassword") String password);

    /**
     * 操作数据库更新token的方法
     *
     * @param o
     */
    void updateToken(SysOperate o);

    /***
     * 确认修改密码
     * @param o
     */
    Integer changePwd(SysOperate o);

    /***
     * 系统用户管理：搜索功能先把分页信息拿回来
     * @param request
     * @return
     */
    long searchPageCount(@Param("request") RequestAccountSearch request);

    /***
     *系统用户管理：搜索功能搜索到的列表数据
     * @param request
     * @param pageHelper
     * @return
     */
    List<SysOperate> accountSearch(@Param("request") RequestAccountSearch request,
                                   @Param("pageHelper") PageAndSort pageHelper);

    /***
     * 查询当前用户处于什么状态
     * @param partnerCode
     * @param account
     * @return
     */
    String checkOperStatus(@Param("partnerCode") String partnerCode,
                           @Param("operAccount") String account);

    /***
     * 对账号的状态进行操作：封禁账号；启用账号
     * @param o
     * @return
     */
    Integer operateOperStatus(SysOperate o);

    /***
     * 查询数据表中是否已经为此客户创建过账号
     * @param partnerCode
     * @return
     */
    Integer checkPartner(@Param("partnerCode") String partnerCode);

    /***
     *创建账号
     * @param o
     * @return
     */
    Integer createAccount(SysOperate o);

    /**
     * 根据partnerCode查询企业名称
     *
     * @param partnerCode
     * @return
     */
    String queryNameByCode(String partnerCode);

    /**
     * 查询账号存不存在
     *
     * @param account
     * @return
     */
    Integer queryAccount(@Param("operAccount") String account);

    /**
     * 验证原密码是否正确
     *
     * @param account
     * @param oldPassword
     * @return
     */
    Integer queryOldPwd(@Param("operAccount") String account,
                        @Param("operPassword")String oldPassword);
}
